package services

import util.Queries
import vos.IndicadorBoletin
import enums.CategoriaIndicador
import scala.collection.JavaConverters._

object ColegioSrvScala {

  def getBoletin(idEstudiante: Long, idPeriodo: Long) = {
    val res: List[Array[Object]] = SDAO.executeNative(Queries.getIndicadoresBoletin, -1, "idEstudiante", idEstudiante, "idPeriodo", idPeriodo)
    //    res.foreach(r => {
    //      r.foreach(c =>
    //        print(c + ",")); println()
    //    });
    //    val materiasList = res.groupBy((row: Array[Object]) => row(0).toString()).mapValues((indicadoresMateria: List[Array[Object]]) => {
    //      val nombre = indicadoresMateria(0)(0).toString()
    //      val calificacion = indicadoresMateria(0)(1).toString()
    //
    //      val grouped = indicadoresMateria.groupBy(indicador => indicador(2).toString()).map(group => (group._1, group._2.map(i => (getHid(i), i(4).toString())).toMap))
    //      val fortalezasJava = grouped.get(CategoriasIndicadores.Fortalezas.toString()).getOrElse(Map()).asJava
    //      val debilidadesJava = grouped.get(CategoriasIndicadores.Debilidades.toString()).getOrElse(Map()).asJava
    //      val recomendacionesJava = grouped.get(CategoriasIndicadores.Recomendaciones.toString()).getOrElse(Map()).asJava
    //      new IndicadorBoletin(nombre, calificacion, fortalezasJava, debilidadesJava, recomendacionesJava)
    //    }).values
    //
    //    //JavaConversions.asJavaList(materiasList)
    //    new java.util.ArrayList(materiasList.asJavaCollection).asInstanceOf[java.util.List[IndicadorBoletin]]

    new java.util.ArrayList(res.map((row: Array[Object]) => new IndicadorBoletin(row(0).toString(), row(1).toString(),
      row(2).toString, row(3).toString().toInt, row(4).toString())).asJavaCollection).asInstanceOf[java.util.List[IndicadorBoletin]];

  }

  def getHid(i: Array[Object]): String = {
    CategoriaIndicador.valueOf(i(2).toString()).getPrefix() + i(3)
  }

}